with v8.Class_Heap_Graph_Node;
with v8.Class_Value;
package v8.Class_Heap_Graph_Edge is
   type Heap_Graph_Edge (<>) is tagged limited private;
   type Pointer is access Heap_Graph_Edge;
   type Readonly_Pointer is access constant Heap_Graph_Edge;
   -- represents a directed connection between heap
   -- graph nodes: from retainers to retained nodes.

   function Get_Type (this : Heap_Graph_Edge) return Heap_Graph_Edge_Type.Enum;
   -- Returns edge type (see HeapGraphEdge::Type).

   function Get_Name (this : Heap_Graph_Edge) return v8.Class_Value.Pointer;
   -- Returns edge name. This can be a variable name, an element index, or
   -- a property name.(return Handle<Value>)

   function Get_From_Node
     (this : Heap_Graph_Edge
     ) return v8.Class_Heap_Graph_Node.Readonly_Pointer;
   -- Returns origin node.

   function Get_To_Node
     (this : Heap_Graph_Edge
     ) return v8.Class_Heap_Graph_Node.Readonly_Pointer;
   -- Returns destination node.


private
   type Heap_Graph_Edge is tagged limited null record;

   pragma Import (CPP, Get_Type, "_ZNK2v813HeapGraphEdge7GetTypeEv");
   pragma Import (CPP, Get_Name, "_ZNK2v813HeapGraphEdge7GetNameEv");
   pragma Import (CPP, Get_From_Node, "_ZNK2v813HeapGraphEdge11GetFromNodeEv");
   pragma Import (CPP, Get_To_Node, "_ZNK2v813HeapGraphEdge9GetToNodeEv");
end v8.Class_Heap_Graph_Edge;
